package com.topscomm.tap.common;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

/**
 * @description:使用redis存储CboItemDetails表的数据
 * @author: zhanglongfei
 * @date: 2020年12月17日下午2:38:33
 * @modify:
 */
@Component
public class RedisDatacodeStore {
	@Autowired
	private RedisTemplate<String, Object> redisTemplate;
	public static final String REDIS_KEY_PREFIX = "datacode:";
	private long expireHour = 12;

	/**
	 * @description:缓存数据
	 * @param key
	 * @param value
	 * @author: zhanglongfei
	 * @date: 2020年12月17日下午2:52:23
	 * @modify:
	 */
	public void storeData(String key, List<Map<String, Object>> value) {
		String fullKey = REDIS_KEY_PREFIX + key;
		redisTemplate.opsForValue().set(fullKey, value, expireHour, TimeUnit.HOURS);
	}

	/**
	 * @description:查询数据
	 * @param key
	 * @return
	 * @author: zhanglongfei
	 * @date: 2020年12月17日下午2:52:45
	 * @modify:
	 */
	public List<Map<String, Object>> queryData(String key) {
		String fullKey = REDIS_KEY_PREFIX + key;
		Object value = redisTemplate.opsForValue().get(fullKey);
		if (value == null)
			return null;
		try {
			List<Map<String, Object>> trueValue = (List<Map<String, Object>>) value;
			return trueValue;
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * @description:
	 * @param key
	 * @author: zhanglongfei
	 * @date: 2021年3月24日下午7:20:23
	 * @modify:
	 */
	public boolean existKey(String key) {
		String fullKey = REDIS_KEY_PREFIX + key;
		return redisTemplate.hasKey(fullKey);
	}

	/**
	 * @description:删除key
	 * @param key
	 * @author: zhanglongfei
	 * @date: 2020年12月17日下午3:25:45
	 * @modify:
	 */
	public void removeKey(String key) {
		String fullKey = REDIS_KEY_PREFIX + key;
		redisTemplate.delete(fullKey);
	}

	/**
	 * @description:清空所有数据
	 * @author: zhanglongfei
	 * @date: 2020年12月17日下午3:27:59
	 * @modify:
	 */
	public void clearData() {
		Set<String> keys = redisTemplate.keys(REDIS_KEY_PREFIX + "*");
		if (keys != null) {
			for (String key : keys) {
				redisTemplate.delete(key);
			}
		}
	}
	/**
	 * @description:清空所有数据
	 * @author: zhanglongfei
	 * @date: 2020年12月17日下午3:27:59
	 * @modify:
	 */
	public void clearData(String key) {
		String fullKey = REDIS_KEY_PREFIX + key;
        if(this.existKey(key)){
        	redisTemplate.delete(fullKey);
		}
	}
	/**
	  * @description: 在key对应的Value之后添加单条数据
	  * @author: xinfushuo
	  * @param: Map :id code name
	  * @throws:
	  * @return:
	  * @date: 2021/7/30
	  * @modify:
	  */
	public void appendData(String key,Map<String,Object> itemData){
		String fullkey = REDIS_KEY_PREFIX+key;
		List<Map<String,Object>>  Items = (List<Map<String, Object>>) redisTemplate.opsForValue().get(fullkey);
		Items.add(itemData);
		redisTemplate.opsForValue().set(fullkey,Items,expireHour,TimeUnit.HOURS);
	}













}
